www.gusucode.com > WSTMall PHP网店系统 v1.6.0PHP源码程序 > WSTMall PHP网店系统 v1.6.0/wstmall_v1.6.0_160506/wstmall_v1.6.0_160506/Upgrade/Upgrade/Apps/Home/View/default/js/cart/quick_links.js

    jQuery(function($){
	//创建DOM
	var 
	quickHTML = document.querySelector("div.quick_link_mian"),
	quickShell = $(document.createElement('div')).html(quickHTML).addClass('quick_links_wrap'),
	quickLinks = quickShell.find('.quick_links');
	quickPanel = quickLinks.next();
	quickShell.appendTo('.mui-mbar-tabs');
	
	//具体数据操作 
	var 
	quickPopXHR,
	loadingTmpl = '<div class="loading" style="padding:30px 80px"><i></i><span>Loading...</span></div>',
	popTmpl = '<a href="javascript:;" class="ibar_closebtn" title="关闭"></a><div class="ibar_plugin_title"><h3><%=title%></h3></div><div class="pop_panel"><%=content%></div><div class="arrow"><i></i></div><div class="fix_bg"></div>',
	historyListTmpl = '',
	newMsgTmpl = '',
	quickPop = quickShell.find('#quick_links_pop'),
	quickDataFns = {
		//购物信息
		message_list: {
			msgtype:1,
			title: '购物车',
			content: '<div class="ibar_plugin_content"><a href="javascript:topay();" class="cart_go_btn" >去购物车结算</a></div></div>',
			init:$.noop
		}
	};
	
	//showQuickPop
	var 
	prevPopType,
	prevTrigger,
	doc = $(document),
	popDisplayed = false,
	hideQuickPop = function(){
		if(prevTrigger){
			prevTrigger.removeClass('current');
		}
		popDisplayed = false;
		prevPopType = '';
		quickPop.hide();
		$(".quick_links_wrap").width(40);
		quickPop.animate({left:280},100);
		$(".quick_links_panel").animate({"right":"0px"},100);
	},
	showQuickPop = function(type){
		if(WST.IS_LOGIN==0){
			return;
		}
		if(quickPopXHR && quickPopXHR.abort){
			quickPopXHR.abort();
		}
		if(type !== prevPopType){
			var fn = quickDataFns[type];
			
			if(fn && fn.msgtype==1){
				$(".quick_links_wrap").animate({"width":"280px"},100);
				$(".quick_links_panel").animate({"right":"280px"},100);
				fn.content = "<div class='ibar_plugin_content' style='height:100%;padding-top:100%;padding-left:80px;'><img src='"+WST.DOMAIN +"/Apps/Home/View/default/images/loading.gif' width='20'/>数据加载中...</div>";
				quickPop.html(ds.tmpl(popTmpl, fn));
				jQuery.post(Think.U('Home/Cart/getCartInfo') ,{"axm":1},function(data) {
					var cart = WST.toJson(data);	
					var html = new Array();
					var totalmoney = 0, goodsnum = 0;
					html.push('<div class="ibar_plugin_content"><div class="ibar_cart_group ibar_cart_product"><ul style="height:80%;overflow:auto;">');
					//for(var i=0;i<cart.cartgoods.length;i++){
					for(var shopId in cart.cartgoods){
						var shop = cart.cartgoods[shopId];
						for(var goodsId in shop.shopgoods){
							var goods = shop.shopgoods[goodsId];
							goodsnum++;
							totalmoney = totalmoney + parseFloat(goods.shopPrice * goods.cnt);
							totalmoney = totalmoney.toFixed(2);
							var url = Think.U("Home/Goods/getGoodsDetails","goodsId="+goods.goodsId);
							html.push(  "<li class='cart_item'>" +
										"<div class='cart_item_pic'>" +
											"<!--input type='checkbox' class='cart-goods-check'-->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='"+url+"'><img src='"+WST.DOMAIN +"/"+goods.goodsThums+"' /></a>" +
										"</div>" +
										"<div class='cart_item_desc'>" +
											"<a href='"+url+"' class='cart_item_name'>"+goods.goodsName+"</a>" );
							if(goods.attrName){
								html.push(  "<div class='cart_item_price'>"+goods.attrName+":"+goods.attrVal+"</div>" );
							}
							html.push(  "<div class='cart_item_price'><span class='cart_price'>¥"+goods.shopPrice+"</span></div>" +
											"<div class='cart-close-box' style=''>" +
											"<span class='cart-colse' price="+goods.shopPrice+" cnt="+goods.cnt+" onclick=removeCartGoods(this,'"+goods.goodsId+"','"+goods.goodsAttrId+"');></span></div>	" +
											"<div class='cart_goods_box' style='position:absolute;bottom:0px;right:6px;'>" +
											
											"<span class='cart-minus'>-</span>" +
											"<span style='font-size:14px;padding-left:6px;padding-right:6px;'>x "+goods.cnt+"</span>" +
											"<span class='cart-plus'>+</span></div>	" +
										"</div>" +
										"<div class='wst-clear'></div>	" +
									"</li>"
								);
						}
					}
					html.push('</ul></div><div class="cart_handler"><div class="cart_handler_header"><span class="cart_handler_left">共<span class="cart_gnum cart_price">'+goodsnum+'</span>件商品</span><span class="cart_handler_right">¥<span id="cart_handler_right_totalmoney">'+totalmoney+'</span></span></div><div style="width:260px;"><a href="javascript:topay();" class="cart_go_btn" >去购物车结算</a></div></div></div>');
					fn.content = html.join("");
					quickPop.html(ds.tmpl(popTmpl, fn));
					fn.init.call(this, fn);
					$("li.cart_item").bind("mouseover",function(){
						$(this).css({"background-color":"#F7F7F7"});
					});
					$("li.cart_item").bind("mouseout",function(){
						$(this).css({"background-color":""});
					});
				});
				doc.unbind('click.quick_links').one('click.quick_links', hideQuickPop);

				quickPop[0].className = 'quick_links_pop quick_' + type;
				popDisplayed = true;
				prevPopType = type;
				quickPop.show();
				quickPop.animate({left:0},100);
			}
			
		}
		/**/
	};
	quickShell.bind('click.quick_links', function(e){
		
		e.stopPropagation();
	});
	quickPop.delegate('a.ibar_closebtn','click',function(){
		$(".quick_links_wrap").width(40);
		quickPop.hide();
		quickPop.animate({left:280,queue:true},100);
		$(".quick_links_panel").animate({"right":"0px"},100);
		if(prevTrigger){
			prevTrigger.removeClass('current');
		}
	});

	//通用事件处理
	var 
	view = $(window),
	quickLinkCollapsed = !!ds.getCookie('ql_collapse'),
	getHandlerType = function(className){
		return className.replace(/current/g, '').replace(/\s+/, '');
	},
	showPopFn = function(){
		var type = getHandlerType(this.className);
		if(popDisplayed && type === prevPopType){
			return hideQuickPop();
		}
		showQuickPop(this.className);
		if(prevTrigger){
			prevTrigger.removeClass('current');
		}
	},
	quickHandlers = {
		//购物车,最近浏览,商品咨询
		my_qlinks: showPopFn,
		message_list: showPopFn,
		history_list: showPopFn,
		leave_message: showPopFn,
		mpbtn_histroy:showPopFn,
		mpbtn_recharge:showPopFn,
		mpbtn_wdsc:showPopFn,
		//返回顶部
		return_top: function(){
			ds.scrollTo(0, 0);
			hideReturnTop();
		}
	};
	quickShell.delegate('a', 'click', function(e){
		
		var type = getHandlerType(this.className);
		if(type && quickHandlers[type]){
			quickHandlers[type].call(this);
			e.preventDefault();
		}
		
	});
	
	//Return top
	var scrollTimer, resizeTimer, minWidth = 1350;

	function resizeHandler(){
		clearTimeout(scrollTimer);
		scrollTimer = setTimeout(checkScroll, 160);
	}
	
	function checkResize(){
		quickShell[view.width() > 1340 ? 'removeClass' : 'addClass']('quick_links_dockright');
	}
	function scrollHandler(){
		clearTimeout(resizeTimer);
		resizeTimer = setTimeout(checkResize, 160);
	}
	function checkScroll(){
		view.scrollTop()>100 ? showReturnTop() : hideReturnTop();
	}
	function showReturnTop(){
		quickPanel.addClass('quick_links_allow_gotop');
	}
	function hideReturnTop(){
		quickPanel.removeClass('quick_links_allow_gotop');
	}
	
	view.bind('scroll.go_top', resizeHandler).bind('resize.quick_links', scrollHandler);
	quickLinkCollapsed && quickShell.addClass('quick_links_min');
	resizeHandler();
	scrollHandler();

});

function removeCartGoods(obj,goodsId,goodsAttrId){
	jQuery.post(Think.U('Home/Cart/delCartGoods') ,{goodsId:goodsId,goodsAttrId:goodsAttrId},function(data) {
		
		var vd = WST.toJson(data);
		$(obj).parent().parent().parent().remove();
		var price = $(obj).attr("price");
		var cnt = $(obj).attr("cnt");
		var totalMoney = parseFloat($("#cart_handler_right_totalmoney").html(),10);
		$("#cart_handler_right_totalmoney").html(parseFloat(totalMoney - price*cnt,10).toFixed(2));
		var cartNum = parseInt($('.cart_num').html(),10);
		$('.cart_num').html(cartNum-1);
		$(".cart_gnum").html(cartNum-1);
	});	
}